草庐IT

C++ ifstream 到 char *

全部标签

c++ - 使用 ifstream 读取 float

我正在尝试使用ifstream从.out文件中读取一系列float,但如果我之后输出它们,它们就不正确了。这是我的输入代码:floatx,y,z;ifstreamtable;table.open("Resources/bones.out");if(table.fail()){cout>x;table>>y;table>>z;cout我的输入文件:0.4884540.5102160.4669790.4872420.4213470.4729770.4867730.3712510.473103...现在进行测试,我只是将第一行读入xy和z,我的输出是102关于为什么我没有得到正确的输出有什么

c++ - 在 std::string 中使用自定义分配器重新使用已分配的 char 缓冲区

我需要在std::string对象中使用一个已经分配的char*缓冲区(带有字符串内容)。经过一些研究,我发现这几乎是不可能的,并且std::string总是会有自己的私有(private)数据拷贝。我能想到的唯一剩下的方法是使用自定义分配器,它将返回已分配的char缓冲区的地址。为此,std::string应仅使用分配器来分配内存以保存其字符串数据,而不用于其他目的。是这样吗? 最佳答案 std::string是basic_string的类型定义,已经明确使用默认分配器。std::string无法使用不同的分配器。即使您使用所需的

c++ - 从 char* 到 signed char* 的转换

我看到了一段有效的C代码,我试图将其编译为C++,但出现了一个我无法理解的错误。char*t;signedchar*v=t;error:invalidconversionfromchar*tosignedchar*据我了解,char和signedchar在语义上是相同的,但仍被编译器视为不同。我知道错误是由这两种类型之间的差异引起的,我的问题是:为什么存在这种差异?据我所知,char是作为signedchar或unsignedchar实现的,因此它应该与两者相同或另一个。我咨询了thisquestion它没有回答我想知道的问题。 最佳答案

c++ - 为什么 "auto"将字符串声明为 const char* 而不是 std::string?

我制作了一个模板,其中添加了给定的数据。如果我这样使用它,编译器会将in_1和in_2声明为constchar*,并且代码不会编译。#includeusingnamespacestd;templateTaddstuff(Tpart_1,Tpart_2){return(part_1+part_2);}intmain(intargc,charconst*argv[]){autoin_1="Shut";autoin_2="up.";cout如果我声明in_1和in_2std::string,它就像一个魅力。为什么编译器不能(或没有)自动声明这些字符串std::string?

c++ - 为什么这段代码对 char * 很快?

在thistalkbySutter在1:15:26出现了如下代码,classemployee{std::stringname_;public:template,std::string>::value>>voidset_name(String&&name)noexcept(std::isnothrow_assignable::value){name_=std::forward(name);}}我知道std::forward是如何工作的,如果name是一个左值,name_将被复制构造;如果name是一个右值,name_将被构建。但是在幻灯片中它还说Optimizedtostealfromr

c++ - 如何理解 "C++ allows sizeof(char*) != sizeof(int*)"?

我正在读这个post与char和byte相关,并遇到以下单词:Anint*couldstillbeimplementedasasinglehardwarepointer,sinceC++allowssizeof(char*)!=sizeof(int*).如何理解'C++允许sizeof(char*)!=sizeof(int*)'? 最佳答案 有些(或曾经)机器只能处理整个“单词”,其中一个单词大到足以容纳多个字符。例如,PDP-6/10的字长为36位。在这样的机器上,您可以实现9位字节并将字节指针表示为字指针和字内位索引的组合。一个

c++ - 如何将 std::basic_string 类型转换为 char 类型的数组?

运行此代码时出现以下错误:syslog(LOG_ERR|LOG_USER,"%s",errorString);cannotconvert‘conststring{akaconststd::basic_string}’to‘constchar*’for>argument‘2’to‘voidsyslog(int,constchar*,...)’inServer.cpp/PeCounterline478C/C++Problem我正在守护程序,当使用cout输出到stdio时,errorString值打印得很好,但在使用syslog调用时不会打印。将std::basic_string(char

c++ - 字节数组的 Char 与 unsigned char

当存储“字节数组”(blobs...)时,对于项目(unsignedchar使用char还是unsignedchar更好>又名uint8_t)?(标准规定两者的sizeof正好是1字节。)这有关系吗?或者一个比另一个更方便或更普遍?也许,像Boost这样的库确实使用了什么? 最佳答案 如果char是有符号的,那么对设置了高位的字节值执行算术将导致在提升为int时进行符号扩展;所以,例如:charc='\xf0';intres=(c将给出0xfffffff0而不是0xf0f0f0f0。这可以通过使用0xff进行屏蔽来避免。char如果

c++ - 为 Char 赋值重载 operator[] - C++

虽然我确实有一些编程经验,但我是C++的新手。我构建了一个Text类,它使用动态char*作为主要成员。类定义如下。#include#includeusingnamespacestd;classText{public:Text();Text(constchar*);//Typecastchar*toTextobjText(constText&);//Copyconstructor~Text();//OverloadedoperatorsText&operator=(constText&);Textoperator+(constText&)const;//Concatbooloperat

c++ - 如何在 C++ 中将 char* 缓冲区包装在 WinRT IBuffer 中

我想实现一个包装char*缓冲区的C++WinRTIBuffer,因此我可以将它与接受IBuffer^参数的WinRTWriteAsync/ReadAsync操作一起使用。编辑1(说明)我想避免数据复制。 最佳答案 大部分复制自http://jeremiahmorrill.wordpress.com/2012/05/11/http-winrt-client-for-c/但适合直接包装我自己的byte[]:NativeBuffer.h:#pragmaonce#include#include#include#include#includ